This block lets you record an action that you act out with your robot. It does this by remembering how many times the motors turn on your robot and then replaying the correct number of turns when you select "run" on your Record/Play block and run your program.
For example, you can have the Record/Play block record the motion as you roll a wheeled robot forward and then turn it sharply to the left. Or you might build a robotic arm and record the motion as it shakes hands with you. When you run these recorded motions using a Record/Play block, the wheeled robot will go forward and turn, and the robotic arm will shake hands, in both cases without your help.
To record an action, first choose a name for the action and an estimated time for how long it will take to complete. In the first example above of the wheeled robot, you might call the file "forward and turn" and set the time to 10 seconds.
You would then download the block. When you’re ready, run the program and act out the motion you want to record. When the time is up (10 seconds in this case), the motion you acted out will be saved.
Finally, change the block’s action property from "record" to "play," type the name you gave to the recorded sequence, download the Record/Play block again and run the program. It will repeat (as closely as possible) the acted out motion without your help.
Note: Your recorded movement may not be exactly the same as the movement you acted out.
If you choose to record a Record/Play file, the configuration panel will look like the one above.
If you choose to play an already recorded Record/Play file, the configuration panel will look like the one above.
Note: If you record and play an action in the same program, you must remember to type in the same file name in both blocks – the file name will not appear in the list of previously saved actions.
You can control the Record/Play block dynamically by connecting data wires (from other blocks’ data hubs) to the Record/Play block’s data hub.
Open a block’s data hub by clicking the tab at the lower left edge of the block after it has been placed on the work area.
Data wires carrying input information to a block are connected to the plugs on the left side of its data hub. Data wires carrying output information are connected to the plugs on the right side.
[A] Input plug
[B] Output plug
[C] Number data wire (yellow)
[D] Logic data wire (green)
[E] Text data wire (orange)
[F] Broken data wire (gray)
If an input plug has a corresponding output plug (see A above), the input data will pass through from the input plug to the output plug without being changed. In this case, you can only use the output plug if the input plug is connected to an input data wire; connecting an output data wire to such an output plug without a connected input data wire will cause the output data wire to be "broken" (and colored gray).
Each data wire carries a specific type of data between blocks. For example, if a data wire is dragged from a logic plug on a block’s data hub, it can only be connected to a logic plug on another block’s data hub. The chart below shows what kind of data each plug can accept or send out.
Data wires are identified with specific colors: wires carrying number data are colored yellow, wires carrying logic data are colored green, and wires carrying text data are colored orange.
If you try to connect a data wire to a plug of the wrong data type, the data wire will be broken (and colored gray). You will not be able to download your program if a data wire is broken.
If you click a broken wire you can read why it is broken in the small help window in the lower right corner of the work area.
If an input data wire transmits a value outside the possible range of the plug it is connected to, the block will either ignore the value or change it to a value within its range. For plugs that allow just a few input values (example: just 0, 1, or 2), the plug will ignore the input if a value arrives outside its range.
For plugs that accept larger input ranges (example: 0 – 100), the plug will force any input outside its range to fit. For example, if a Move block’s Power plug receives an input value of 150, the block will change the input value to 100 (i.e., a number within the Power plug’s range).
Plug | Data Type | Possible Range | What the Values Mean | This Plug is Ignored When... | |
Action | Number | 0 - 1 | 0 = Record, 1 = Play | ||
Filename | Text | 15 character maximum | Filename to record/play | ||
Record A | Logic | True/False | True = Record Motor A False = Don't record Motor A |
Action = Play | |
Record B | Logic | True/False | True = Record Motor B False = Don't record Motor B |
Action = Play | |
Record C | Logic | True/False | True = Record Motor C False = Don't record Motor C |
Action = Play | |
Samples per Second | Number | 0 - 255 | Determines how often the motors are sampled during recording | Action = Play | |
Total Time | Number | 0 - 2147483647 | Time to record in milliseconds | Action = Play |